TSTP Solution File: ITP050^1 by E---3.1.00

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : E---3.1.00
% Problem  : ITP050^1 : TPTP v8.2.0. Released v7.5.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_E %s %d THM

% Computer : n006.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8042.1875MB
% OS       : Linux 3.10.0-693.el7.x86_64
% CPULimit : 300s
% WCLimit  : 300s
% DateTime : Mon May 20 22:16:04 EDT 2024

% Result   : Theorem 1.09s 0.65s
% Output   : CNFRefutation 1.09s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :    8
%            Number of leaves      :   26
% Syntax   : Number of formulae    :   51 (  12 unt;  18 typ;   0 def)
%            Number of atoms       :   71 (   7 equ;   0 cnn)
%            Maximal formula atoms :    7 (   2 avg)
%            Number of connectives :  248 (  24   ~;  23   |;   3   &; 190   @)
%                                         (   2 <=>;   6  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   14 (   7 avg)
%            Number of types       :    6 (   5 usr)
%            Number of type conns  :   28 (  28   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   15 (  13 usr;   5 con; 0-4 aty)
%            Number of variables   :   66 (   4   ^  62   !;   0   ?;  66   :)

% Comments : 
%------------------------------------------------------------------------------
thf(decl_sort1,type,
    product_prod_nat_nat: $tType ).

thf(decl_sort2,type,
    a: $tType ).

thf(decl_sort3,type,
    set_Pr1986765409at_nat: $tType ).

thf(decl_sort4,type,
    nat: $tType ).

thf(decl_sort5,type,
    list_P559422087at_nat: $tType ).

thf(decl_32,type,
    e_a: ( product_prod_nat_nat > a ) > set_Pr1986765409at_nat ).

thf(decl_37,type,
    isPath_a: ( product_prod_nat_nat > a ) > nat > list_P559422087at_nat > nat > $o ).

thf(decl_38,type,
    isShortestPath_a: ( product_prod_nat_nat > a ) > nat > list_P559422087at_nat > nat > $o ).

thf(decl_45,type,
    inf_in586391887at_nat: set_Pr1986765409at_nat > set_Pr1986765409at_nat > set_Pr1986765409at_nat ).

thf(decl_50,type,
    set_Pr2131844118at_nat: list_P559422087at_nat > set_Pr1986765409at_nat ).

thf(decl_54,type,
    ord_le841296385at_nat: set_Pr1986765409at_nat > set_Pr1986765409at_nat > $o ).

thf(decl_59,type,
    member701585322at_nat: product_prod_nat_nat > set_Pr1986765409at_nat > $o ).

thf(decl_62,type,
    c: product_prod_nat_nat > a ).

thf(decl_63,type,
    edges: set_Pr1986765409at_nat ).

thf(decl_64,type,
    p: list_P559422087at_nat ).

thf(decl_65,type,
    s: nat ).

thf(decl_66,type,
    t: nat ).

thf(decl_151,type,
    esk85_2: set_Pr1986765409at_nat > set_Pr1986765409at_nat > product_prod_nat_nat ).

thf(fact_257_inf_Oorder__iff,axiom,
    ( ord_le841296385at_nat
    = ( ^ [X28: set_Pr1986765409at_nat,X29: set_Pr1986765409at_nat] :
          ( X28
          = ( inf_in586391887at_nat @ X28 @ X29 ) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fact_257_inf_Oorder__iff) ).

thf(fact_200_Graph_OshortestPath__is__path,axiom,
    ! [X17: product_prod_nat_nat > a,X2: nat,X14: list_P559422087at_nat,X15: nat] :
      ( ( isShortestPath_a @ X17 @ X2 @ X14 @ X15 )
     => ( isPath_a @ X17 @ X2 @ X14 @ X15 ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fact_200_Graph_OshortestPath__is__path) ).

thf(fact_164_IntD2,axiom,
    ! [X377: product_prod_nat_nat,X3: set_Pr1986765409at_nat,X4: set_Pr1986765409at_nat] :
      ( ( member701585322at_nat @ X377 @ ( inf_in586391887at_nat @ X3 @ X4 ) )
     => ( member701585322at_nat @ X377 @ X4 ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fact_164_IntD2) ).

thf(fact_146_Graph_OisPath__edgeset,axiom,
    ! [X17: product_prod_nat_nat > a,X2: nat,X14: list_P559422087at_nat,X15: nat,X16: product_prod_nat_nat] :
      ( ( isPath_a @ X17 @ X2 @ X14 @ X15 )
     => ( ( member701585322at_nat @ X16 @ ( set_Pr2131844118at_nat @ X14 ) )
       => ( member701585322at_nat @ X16 @ ( e_a @ X17 ) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fact_146_Graph_OisPath__edgeset) ).

thf(fact_0_SP,axiom,
    isShortestPath_a @ c @ s @ p @ t,
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fact_0_SP) ).

thf(fact_130_subset__eq,axiom,
    ( ord_le841296385at_nat
    = ( ^ [X313: set_Pr1986765409at_nat,X314: set_Pr1986765409at_nat] :
        ! [X336: product_prod_nat_nat] :
          ( ( member701585322at_nat @ X336 @ X313 )
         => ( member701585322at_nat @ X336 @ X314 ) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fact_130_subset__eq) ).

thf(fact_1_SP__EDGES,axiom,
    ord_le841296385at_nat @ edges @ ( set_Pr2131844118at_nat @ p ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fact_1_SP__EDGES) ).

thf(conj_0,conjecture,
    ord_le841296385at_nat @ edges @ ( e_a @ c ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',conj_0) ).

thf(c_0_8,plain,
    ! [X1647: set_Pr1986765409at_nat,X1648: set_Pr1986765409at_nat] :
      ( ( ord_le841296385at_nat @ X1647 @ X1648 )
    <=> ( X1647
        = ( inf_in586391887at_nat @ X1647 @ X1648 ) ) ),
    inference(fof_simplification,[status(thm)],[inference(fof_simplification,[status(thm)],[fact_257_inf_Oorder__iff])]) ).

thf(c_0_9,plain,
    ! [X2246: product_prod_nat_nat > a,X2247: nat,X2248: list_P559422087at_nat,X2249: nat] :
      ( ~ ( isShortestPath_a @ X2246 @ X2247 @ X2248 @ X2249 )
      | ( isPath_a @ X2246 @ X2247 @ X2248 @ X2249 ) ),
    inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[fact_200_Graph_OshortestPath__is__path])])]) ).

thf(c_0_10,plain,
    ! [X2167: product_prod_nat_nat,X2168: set_Pr1986765409at_nat,X2169: set_Pr1986765409at_nat] :
      ( ~ ( member701585322at_nat @ X2167 @ ( inf_in586391887at_nat @ X2168 @ X2169 ) )
      | ( member701585322at_nat @ X2167 @ X2169 ) ),
    inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[fact_164_IntD2])])]) ).

thf(c_0_11,plain,
    ! [X2368: set_Pr1986765409at_nat,X2369: set_Pr1986765409at_nat] :
      ( ( ~ ( ord_le841296385at_nat @ X2368 @ X2369 )
        | ( X2368
          = ( inf_in586391887at_nat @ X2368 @ X2369 ) ) )
      & ( ( X2368
         != ( inf_in586391887at_nat @ X2368 @ X2369 ) )
        | ( ord_le841296385at_nat @ X2368 @ X2369 ) ) ),
    inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_8])])]) ).

thf(c_0_12,plain,
    ! [X2114: product_prod_nat_nat > a,X2115: nat,X2116: list_P559422087at_nat,X2117: nat,X2118: product_prod_nat_nat] :
      ( ~ ( isPath_a @ X2114 @ X2115 @ X2116 @ X2117 )
      | ~ ( member701585322at_nat @ X2118 @ ( set_Pr2131844118at_nat @ X2116 ) )
      | ( member701585322at_nat @ X2118 @ ( e_a @ X2114 ) ) ),
    inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[fact_146_Graph_OisPath__edgeset])])]) ).

thf(c_0_13,plain,
    ! [X2: nat,X17: product_prod_nat_nat > a,X14: list_P559422087at_nat,X8: nat] :
      ( ( isPath_a @ X17 @ X2 @ X14 @ X8 )
      | ~ ( isShortestPath_a @ X17 @ X2 @ X14 @ X8 ) ),
    inference(split_conjunct,[status(thm)],[c_0_9]) ).

thf(c_0_14,plain,
    isShortestPath_a @ c @ s @ p @ t,
    inference(split_conjunct,[status(thm)],[fact_0_SP]) ).

thf(c_0_15,plain,
    ! [X3: set_Pr1986765409at_nat,X5: product_prod_nat_nat,X4: set_Pr1986765409at_nat] :
      ( ( member701585322at_nat @ X5 @ X4 )
      | ~ ( member701585322at_nat @ X5 @ ( inf_in586391887at_nat @ X3 @ X4 ) ) ),
    inference(split_conjunct,[status(thm)],[c_0_10]) ).

thf(c_0_16,plain,
    ! [X3: set_Pr1986765409at_nat,X4: set_Pr1986765409at_nat] :
      ( ( X3
        = ( inf_in586391887at_nat @ X3 @ X4 ) )
      | ~ ( ord_le841296385at_nat @ X3 @ X4 ) ),
    inference(split_conjunct,[status(thm)],[c_0_11]) ).

thf(c_0_17,plain,
    ! [X1630: set_Pr1986765409at_nat,X1631: set_Pr1986765409at_nat] :
      ( ( ord_le841296385at_nat @ X1630 @ X1631 )
    <=> ! [X336: product_prod_nat_nat] :
          ( ( member701585322at_nat @ X336 @ X1630 )
         => ( member701585322at_nat @ X336 @ X1631 ) ) ),
    inference(fof_simplification,[status(thm)],[inference(fof_simplification,[status(thm)],[fact_130_subset__eq])]) ).

thf(c_0_18,plain,
    ! [X2: nat,X5: product_prod_nat_nat,X8: nat,X17: product_prod_nat_nat > a,X14: list_P559422087at_nat] :
      ( ( member701585322at_nat @ X5 @ ( e_a @ X17 ) )
      | ~ ( isPath_a @ X17 @ X2 @ X14 @ X8 )
      | ~ ( member701585322at_nat @ X5 @ ( set_Pr2131844118at_nat @ X14 ) ) ),
    inference(split_conjunct,[status(thm)],[c_0_12]) ).

thf(c_0_19,plain,
    isPath_a @ c @ s @ p @ t,
    inference(spm,[status(thm)],[c_0_13,c_0_14]) ).

thf(c_0_20,plain,
    ! [X5: product_prod_nat_nat,X4: set_Pr1986765409at_nat,X3: set_Pr1986765409at_nat] :
      ( ( member701585322at_nat @ X5 @ X3 )
      | ~ ( member701585322at_nat @ X5 @ X4 )
      | ~ ( ord_le841296385at_nat @ X4 @ X3 ) ),
    inference(spm,[status(thm)],[c_0_15,c_0_16]) ).

thf(c_0_21,plain,
    ord_le841296385at_nat @ edges @ ( set_Pr2131844118at_nat @ p ),
    inference(split_conjunct,[status(thm)],[fact_1_SP__EDGES]) ).

thf(c_0_22,plain,
    ! [X2073: set_Pr1986765409at_nat,X2074: set_Pr1986765409at_nat,X2075: product_prod_nat_nat,X2076: set_Pr1986765409at_nat,X2077: set_Pr1986765409at_nat] :
      ( ( ~ ( ord_le841296385at_nat @ X2073 @ X2074 )
        | ~ ( member701585322at_nat @ X2075 @ X2073 )
        | ( member701585322at_nat @ X2075 @ X2074 ) )
      & ( ( member701585322at_nat @ ( esk85_2 @ X2076 @ X2077 ) @ X2076 )
        | ( ord_le841296385at_nat @ X2076 @ X2077 ) )
      & ( ~ ( member701585322at_nat @ ( esk85_2 @ X2076 @ X2077 ) @ X2077 )
        | ( ord_le841296385at_nat @ X2076 @ X2077 ) ) ),
    inference(distribute,[status(thm)],[inference(fof_nnf,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_17])])])])])])]) ).

thf(c_0_23,plain,
    ! [X5: product_prod_nat_nat] :
      ( ( member701585322at_nat @ X5 @ ( e_a @ c ) )
      | ~ ( member701585322at_nat @ X5 @ ( set_Pr2131844118at_nat @ p ) ) ),
    inference(spm,[status(thm)],[c_0_18,c_0_19]) ).

thf(c_0_24,plain,
    ! [X5: product_prod_nat_nat] :
      ( ( member701585322at_nat @ X5 @ ( set_Pr2131844118at_nat @ p ) )
      | ~ ( member701585322at_nat @ X5 @ edges ) ),
    inference(spm,[status(thm)],[c_0_20,c_0_21]) ).

thf(c_0_25,negated_conjecture,
    ~ ( ord_le841296385at_nat @ edges @ ( e_a @ c ) ),
    inference(fof_simplification,[status(thm)],[inference(assume_negation,[status(cth)],[conj_0])]) ).

thf(c_0_26,plain,
    ! [X3: set_Pr1986765409at_nat,X4: set_Pr1986765409at_nat] :
      ( ( ord_le841296385at_nat @ X3 @ X4 )
      | ~ ( member701585322at_nat @ ( esk85_2 @ X3 @ X4 ) @ X4 ) ),
    inference(split_conjunct,[status(thm)],[c_0_22]) ).

thf(c_0_27,plain,
    ! [X5: product_prod_nat_nat] :
      ( ( member701585322at_nat @ X5 @ ( e_a @ c ) )
      | ~ ( member701585322at_nat @ X5 @ edges ) ),
    inference(spm,[status(thm)],[c_0_23,c_0_24]) ).

thf(c_0_28,negated_conjecture,
    ~ ( ord_le841296385at_nat @ edges @ ( e_a @ c ) ),
    inference(fof_nnf,[status(thm)],[c_0_25]) ).

thf(c_0_29,plain,
    ! [X3: set_Pr1986765409at_nat] :
      ( ( ord_le841296385at_nat @ X3 @ ( e_a @ c ) )
      | ~ ( member701585322at_nat @ ( esk85_2 @ X3 @ ( e_a @ c ) ) @ edges ) ),
    inference(spm,[status(thm)],[c_0_26,c_0_27]) ).

thf(c_0_30,plain,
    ! [X3: set_Pr1986765409at_nat,X4: set_Pr1986765409at_nat] :
      ( ( member701585322at_nat @ ( esk85_2 @ X3 @ X4 ) @ X3 )
      | ( ord_le841296385at_nat @ X3 @ X4 ) ),
    inference(split_conjunct,[status(thm)],[c_0_22]) ).

thf(c_0_31,negated_conjecture,
    ~ ( ord_le841296385at_nat @ edges @ ( e_a @ c ) ),
    inference(split_conjunct,[status(thm)],[c_0_28]) ).

thf(c_0_32,plain,
    $false,
    inference(sr,[status(thm)],[inference(spm,[status(thm)],[c_0_29,c_0_30]),c_0_31]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.07/0.13  % Problem    : ITP050^1 : TPTP v8.2.0. Released v7.5.0.
% 0.07/0.14  % Command    : run_E %s %d THM
% 0.14/0.35  % Computer : n006.cluster.edu
% 0.14/0.35  % Model    : x86_64 x86_64
% 0.14/0.35  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.35  % Memory   : 8042.1875MB
% 0.14/0.35  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.14/0.35  % CPULimit   : 300
% 0.14/0.35  % WCLimit    : 300
% 0.14/0.35  % DateTime   : Sat May 18 17:38:08 EDT 2024
% 0.14/0.35  % CPUTime    : 
% 0.22/0.49  Running higher-order theorem proving
% 0.22/0.49  Running: /export/starexec/sandbox2/solver/bin/eprover-ho --delete-bad-limit=2000000000 --definitional-cnf=24 -s --print-statistics -R --print-version --proof-object --auto-schedule=8 --cpu-limit=300 /export/starexec/sandbox2/benchmark/theBenchmark.p
% 1.09/0.65  # Version: 3.1.0-ho
% 1.09/0.65  # Preprocessing class: HSLSSMSSSSMNHSA.
% 1.09/0.65  # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 1.09/0.65  # Starting sh1 with 1500s (5) cores
% 1.09/0.65  # Starting new_ho_8 with 300s (1) cores
% 1.09/0.65  # Starting new_ho_11 with 300s (1) cores
% 1.09/0.65  # Starting sh5l with 300s (1) cores
% 1.09/0.65  # new_ho_11 with pid 5324 completed with status 0
% 1.09/0.65  # Result found by new_ho_11
% 1.09/0.65  # Preprocessing class: HSLSSMSSSSMNHSA.
% 1.09/0.65  # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 1.09/0.65  # Starting sh1 with 1500s (5) cores
% 1.09/0.65  # Starting new_ho_8 with 300s (1) cores
% 1.09/0.65  # Starting new_ho_11 with 300s (1) cores
% 1.09/0.65  # No SInE strategy applied
% 1.09/0.65  # Search class: HGHSM-FSLM32-MHSFFSBN
% 1.09/0.65  # Scheduled 6 strats onto 1 cores with 300 seconds (300 total)
% 1.09/0.65  # Starting new_ho_10 with 163s (1) cores
% 1.09/0.65  # new_ho_10 with pid 5333 completed with status 0
% 1.09/0.65  # Result found by new_ho_10
% 1.09/0.65  # Preprocessing class: HSLSSMSSSSMNHSA.
% 1.09/0.65  # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 1.09/0.65  # Starting sh1 with 1500s (5) cores
% 1.09/0.65  # Starting new_ho_8 with 300s (1) cores
% 1.09/0.65  # Starting new_ho_11 with 300s (1) cores
% 1.09/0.65  # No SInE strategy applied
% 1.09/0.65  # Search class: HGHSM-FSLM32-MHSFFSBN
% 1.09/0.65  # Scheduled 6 strats onto 1 cores with 300 seconds (300 total)
% 1.09/0.65  # Starting new_ho_10 with 163s (1) cores
% 1.09/0.65  # Preprocessing time       : 0.009 s
% 1.09/0.65  # Presaturation interreduction done
% 1.09/0.65  
% 1.09/0.65  # Proof found!
% 1.09/0.65  # SZS status Theorem
% 1.09/0.65  # SZS output start CNFRefutation
% See solution above
% 1.09/0.65  # Parsed axioms                        : 408
% 1.09/0.65  # Removed by relevancy pruning/SinE    : 0
% 1.09/0.65  # Initial clauses                      : 707
% 1.09/0.65  # Removed in clause preprocessing      : 94
% 1.09/0.65  # Initial clauses in saturation        : 613
% 1.09/0.65  # Processed clauses                    : 973
% 1.09/0.65  # ...of these trivial                  : 24
% 1.09/0.65  # ...subsumed                          : 256
% 1.09/0.65  # ...remaining for further processing  : 693
% 1.09/0.65  # Other redundant clauses eliminated   : 82
% 1.09/0.65  # Clauses deleted for lack of memory   : 0
% 1.09/0.65  # Backward-subsumed                    : 5
% 1.09/0.65  # Backward-rewritten                   : 5
% 1.09/0.65  # Generated clauses                    : 932
% 1.09/0.65  # ...of the previous two non-redundant : 757
% 1.09/0.65  # ...aggressively subsumed             : 0
% 1.09/0.65  # Contextual simplify-reflections      : 1
% 1.09/0.65  # Paramodulations                      : 843
% 1.09/0.65  # Factorizations                       : 2
% 1.09/0.65  # NegExts                              : 0
% 1.09/0.65  # Equation resolutions                 : 84
% 1.09/0.65  # Disequality decompositions           : 0
% 1.09/0.65  # Total rewrite steps                  : 155
% 1.09/0.65  # ...of those cached                   : 112
% 1.09/0.65  # Propositional unsat checks           : 0
% 1.09/0.65  #    Propositional check models        : 0
% 1.09/0.65  #    Propositional check unsatisfiable : 0
% 1.09/0.65  #    Propositional clauses             : 0
% 1.09/0.65  #    Propositional clauses after purity: 0
% 1.09/0.65  #    Propositional unsat core size     : 0
% 1.09/0.65  #    Propositional preprocessing time  : 0.000
% 1.09/0.65  #    Propositional encoding time       : 0.000
% 1.09/0.65  #    Propositional solver time         : 0.000
% 1.09/0.65  #    Success case prop preproc time    : 0.000
% 1.09/0.65  #    Success case prop encoding time   : 0.000
% 1.09/0.65  #    Success case prop solver time     : 0.000
% 1.09/0.65  # Current number of processed clauses  : 260
% 1.09/0.65  #    Positive orientable unit clauses  : 43
% 1.09/0.65  #    Positive unorientable unit clauses: 0
% 1.09/0.65  #    Negative unit clauses             : 2
% 1.09/0.65  #    Non-unit-clauses                  : 215
% 1.09/0.65  # Current number of unprocessed clauses: 743
% 1.09/0.65  # ...number of literals in the above   : 2264
% 1.09/0.65  # Current number of archived formulas  : 0
% 1.09/0.65  # Current number of archived clauses   : 357
% 1.09/0.65  # Clause-clause subsumption calls (NU) : 30276
% 1.09/0.65  # Rec. Clause-clause subsumption calls : 21972
% 1.09/0.65  # Non-unit clause-clause subsumptions  : 276
% 1.09/0.65  # Unit Clause-clause subsumption calls : 242
% 1.09/0.65  # Rewrite failures with RHS unbound    : 0
% 1.09/0.65  # BW rewrite match attempts            : 21
% 1.09/0.65  # BW rewrite match successes           : 5
% 1.09/0.65  # Condensation attempts                : 973
% 1.09/0.65  # Condensation successes               : 14
% 1.09/0.65  # Termbank termtop insertions          : 67249
% 1.09/0.65  # Search garbage collected termcells   : 14629
% 1.09/0.65  
% 1.09/0.65  # -------------------------------------------------
% 1.09/0.65  # User time                : 0.114 s
% 1.09/0.65  # System time              : 0.017 s
% 1.09/0.65  # Total time               : 0.131 s
% 1.09/0.65  # Maximum resident set size: 5108 pages
% 1.09/0.65  
% 1.09/0.65  # -------------------------------------------------
% 1.09/0.65  # User time                : 0.131 s
% 1.09/0.65  # System time              : 0.021 s
% 1.09/0.65  # Total time               : 0.152 s
% 1.09/0.65  # Maximum resident set size: 2644 pages
% 1.09/0.65  % E---3.1 exiting
% 1.09/0.65  % E exiting
%------------------------------------------------------------------------------